//
// Created by gj on 16-2-21.
//

#ifndef ALLUTILS_POINTERDELETER_H
#define ALLUTILS_POINTERDELETER_H

#include <stddef.h>

/*
 * 内存管理仿函数，负责只能指针的释放，用户和定义自己的内存释放函数
 * 用来支持释放数组这样的数据
 * 也可以特化自己的类型，根据需要选择释放的方法
 */
template<class T>
class DefMemDelete {
public:
    void operator()(T &ptr) {
        delete ptr;
        ptr = NULL;
    }
};

template<class T>
class ArrMemDelete {
public:
    void operator()(T &ptr) {
        delete[] ptr;
        ptr = NULL;
    }
};

#endif //ALLUTILS_POINTERDELETER_H
